package com.meiyou.service;

import com.meiyou.dto.AddArticleDto;
import com.meiyou.dto.ArticlePageQueryDto;
import com.meiyou.dto.UpdateArticleDto;
import com.meiyou.result.PageResult;
import com.meiyou.vo.ArticleDetailVo;
import com.meiyou.vo.ArticleVo;

/**
 * @BelongsProject: meiyou
 * @BelongsPackage: com.meiyou.service
 * @Author: 尹晓安
 * @Date: 2023/11/25 18:09
 * @Description: todo
 */
public interface ArticleService {

    /**
     * 添加文章
     *
     * @param addArticleDto
     * @return
     */
    void add(AddArticleDto addArticleDto);

    /**
     * 修改文章
     *
     * @param updateArticleDto
     * @return
     */
    void updateArticle(UpdateArticleDto updateArticleDto);

    /**
     * 根据用户id获取文章
     *
     * @param articlePageQueryDto
     * @return
     */
    PageResult getArticleByUserId(ArticlePageQueryDto articlePageQueryDto);

    /**
     * 分页获取文章
     *
     * @param articlePageQueryDto
     * @return
     */
    PageResult getArticle(ArticlePageQueryDto articlePageQueryDto);

    /**
     * 删除文章
     *
     * @param id 文章id
     * @return
     */
    void deleteArticle(Long id);

    /**
     * 审核文章
     *
     * @param id     文章id
     * @param status 文章状态，1审核通过、0审核不通过、2审核中
     * @return
     */
    void examineArticle(Long id, Integer status);

    /**
     * 分页获取用户点赞文章
     *
     * @param articlePageQueryDto
     * @return
     */
    PageResult getStarArticle(ArticlePageQueryDto articlePageQueryDto);

    /**
     * 分页获取用户收藏文章
     *
     * @param articlePageQueryDto
     * @return
     */
    PageResult getCollectArticle(ArticlePageQueryDto articlePageQueryDto);

    /**
     * 获取文章详情
     *
     * @param id 文章id
     * @return
     */
    ArticleDetailVo getArticleDetail(Long id);

    /**
     * 管理员获取文章（进行审核）根据文章状态获取
     *
     * @param status 文章状态，1审核通过、0审核不通过、2审核中
     * @return
     */
    PageResult getAdminArticle(Integer status, ArticlePageQueryDto articlePageQueryDto);
}
